树莓派&raid

您所在的位置:网站首页 树莓派 usb device 盘 树莓派&raid

树莓派&raid

2023-12-14 20:12| 来源: 网络整理| 查看: 265

最近偶然发现 RAID 的丐版玩法,不要动辄大几千的 NAS。只需一个硬盘盒加上树莓派 4B 就能实现。

考虑到有的小伙伴可能还不清楚啥是 RAID,这里我先简单解释一波。所谓 RAID,即磁盘阵列的意思。说人话就是把多块独立的硬盘组合起来,以提高文件存储的可靠性或者读写速度。不同的组合方式会有不同的效果,常见的组合有:RAID0、RAID1……

由于我手上有一块十年前的笔记本上拆机下来的日立512G机械硬盘,于是我打算入一块 1T 的机械硬盘,组成一个 RAID1 使用。

RAID1 要求至少要有两块盘,彼此互为镜像;当其中一块盘损坏后,镜像盘可继续工作,因此该组合具有很高的数据安全性。不过,组合后的容量与较小的那块盘相等。因此将上诉两块盘组合起来后,最终仅能得到 512G 的容量。

哈哈,虽然有些遗憾,可仍能满足我目前的需求:

1、把古董 512G 硬盘利用起来,变废为宝🐶

2、将笔记、资料(主要是用 resilio 同步的那些文件)放到一个更安全的存储位置。毕竟,我很少使用云服务,因此对本地存储的可靠性要求更高。

选购 硬盘

首先是硬盘。固态盘不考虑,单位容量价格远高于机械盘;并且我这都已经是丐版玩法了,上固态的意义并不大。但是机械盘也不能随便便买的,我追求极致性价比。

硬盘主要分 3.5 寸和 2.5 寸两种尺寸,前者体积更大,更容易做到更大容量,并且散热也好。但我选择的是 2.5寸。我首先考虑的是便携性——能否和树莓派一样塞到我桌面支架的夹层中。

选择完尺寸之后,接下来就是考虑磁盘技术规格了。机械硬盘主要包括 SMR 和 PMR 两种,前者有更高的磁道密度,因此可以在同体积下把容量堆得更大——厂家因此可以卖出更高的价格。但相较于 PMR 而言,SMR 更容易丢失数据,似乎也更容易坏。

以上论点来自网络搜索得到,不保证百分百正确

就我自己的使用体验而言,PMR 确实相当可靠。上文提到的拆机硬盘,其实就是日立的 PMR 硬盘。它能够用到现在,足以为 PMR 正名了。

我最终选择了日立 1T 的 PMR 机械硬盘,价格 270 左右。

硬盘盒

硬盘盒的备选项蛮多,我主要是考虑外观以及做工。一番对比之后,我选择了麦沃的一款双盘位盒子,价格 140 左右。

410 块钱,所需的硬件就准备妥当了。

RAID1组建

按照硬盘盒安装教程固定好硬盘后,即可进行配置了。一般这种盒子都是通过两个拨片来控制 RAID 模式,这个一般在说明书上会介绍。

RAID1 模式下,两块盘在系统中会被识别为一块。使用格式化工具按照自己的需要划分不同的分区即可。

格式化的操作,推荐使用 DiskGenius ,windows 上著名的软件,功能强大

文件系统

文件系统的相关知识,在本文末尾有介绍。这次我选择的是 NTFS 文件系统。原因如下:

1、硬盘盒主要是挂载在 ubuntu 系统下,可以使用 ntfs-3g 支持读写

2、通过 samba 共享,windows 和 macOS 都能支持读写

3、NTFS 为日志式文件系统,长期使用稳定性更佳

硬盘损坏后的应对策略

RAID1 模式下,两块硬盘互为镜像。假如有一块硬盘故障,只需要插入新硬盘即可自动镜像文件。

注:新硬盘一般不需要格式化或分区,自动镜像是硬盘盒最基本的功能了,如果没有这个功能,那还是不要入手了

由于我组 RAID1 所用的硬盘容量不同,因此有以下场景:

512G + 1T 组合后 RAID1 容量为 512G。假如 512G 硬盘损坏,插入一块新的 1T 硬盘,最终也只会得到 512G 的容量。期望的容量应该是 1T 。不知道是不是这个硬盘盒的特性。

如果想得到 1T 的空间,必须重新组 RAID1。这种情况就得先把文件拷贝出来,因为重组时,文件会丢失。🐶

自动挂载

主机为:树莓派4B,ubuntu系统

将硬盘插到树莓派 USB3.0 接口。通过以下命令查看系统是否识别到设备:

sudo fdisk -l

可以看到下面的 /dev/sda 就是我这个 RAID 了,/dev/sda1、/dev/sda2 为两个分区,他们都是 NTFS 系统。

Disk /dev/sda: 465.74 GiB, 500061700096 bytes, 976683008 sectors Disk model: Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 4096 bytes / 33553920 bytes Disklabel type: dos Disk identifier: 0x91fa2779 Device Boot Start End Sectors Size Id Type /dev/sda1 2048 845664255 845662208 403.2G 7 HPFS/NTFS/exFAT /dev/sda2 845664256 976683007 131018752 62.5G 7 HPFS/NTFS/exFAT

Linux 上,可以使用 fstab 自动挂载 USB 硬盘。首先,查询磁盘各分区对应的 UUID:

sudo ls -l /dev/disk/by-uuid/*

结果如下:

/dev/disk/by-uuid/3AF4808D7F9B2F74 -> ../../sda2 /dev/disk/by-uuid/818C1D55587307F9 -> ../../sda1

分区 UUID 在树莓派断电重启后是固定的,因此可以作为磁盘的唯一标识。

接着,编辑 fstab 配置:

sudo vi /etc/fstab

将下面两行添加到文件末尾:

/dev/disk/by-uuid/818C1D55587307F9 ntfs rw,auto,user,fmask=133,dmask=022,uid=1000,gid=1000 0 0 /dev/disk/by-uuid/3AF4808D7F9B2F74 ntfs rw,auto,user,fmask=133,dmask=022,uid=1000,gid=1000 0 0

注意,需要根据需要进行修改,一般就是系统中的目录。记得提前创建好对应的目录。上面的配置可以当作 NTFS 的默认配置,该配置支持对挂载后的文件进行读写操作。

因为树莓派上的系统默认使用 ntfs-3g 来挂载 NTFS,因此不需要额外安装 ngfs-3g 工具。如果你使用的其他 Linux 发行版,得先确认它对 ntfs-3g 的支持情况。

接着,保存 /etc/fstab 文件,重启树莓派!启动后可查看磁盘的挂载情况:

ubuntu@ubuntu:~/rpi-docker-config-common/common$ sudo df -l | grep sda /dev/sda2 65509372 1983836 63525536 4% /home/ubuntu/data/usb/raid1 /dev/sda1 422831100 227325996 195505104 54% /home/ubuntu/data/usb/time-machine

到这里,RAID1 就组建好了。树莓派是有网络的,配合组建好的 RAID,这套系统看起来似乎很像一台 NAS。

一个东西看起来像鸭子,走路也像鸭子,那么TA就是鸭子。

那么,这个 "NAS" 能做些啥?

比较遗憾的是我并没有体验过白裙或者黑裙,无法从功能上进行对比。

应用 resilio sync

我有记笔记的的习惯,使用的工具为 Typora + markdown,笔记文件保存在本地。为了笔记的安全和可用,我需要有一个同步工具,当在一台设备上编辑保存后,会自动同步到其他设备。resilio 就是这样的工具,这里我不讲如何部署 resilio,这毕竟不是本文的重点。在 resilio 中,不同的设备可以理解为网络中的不同节点。这其中就有一个中心节点,一般 resilio 服务端就充当了这个节点。在我的使用场景下,树莓派即所有网络的中心节点。

中心节点上也有一份完整的文件,在部署 RAID1 之前,这些文件保存在树莓派的 SD 卡中。有了 RAID ,我直接将它们迁移过去了。因此,更多了一份保障。

samba

介绍 samba 之前,我先讲讲我现在的网络环境。

之前频繁出场的树莓派,其实是一个路由器。宿主机系统是 Ubuntu,然后通过 docker 的形式,跑着一个完整的 OpenWRT 容器。这个路由器会通过树莓派无线模块提供 WIFI 信号,电脑、手机等设备都是可以连上这个 WIFI 的。

docker 除了运行 OpenWRT 之外,还有运行上面提到的 resilio 服务端,也有 samba。并且每个服务和每台链接到树莓派 WIFI 的设备都处于同一个局域网。因此,完全可以通过 samba 把 RAID1 目录共享出来,是不是很熟悉,这就是 NAS 啊!

TimeMachine

ooh!有了 samba,又怎么能局限于网络文件共享呢?没错,TimeMachine 整起来。TM 是可以通过 samba 进行备份的。下面是我整理的一套配置:

[global] # 下面这行表示需要登陆之后使用 samba 共享 valid users = ubuntu @ubuntu # 下面这行与上面的相反,表示可以以客人身份,匿名使用 # guest ok = yes [rpi-time-machine] # time-machine 配置开始 vfs objects = fruit streams_xattr fruit:metadata = stream fruit:model = MacSamba fruit:posix_rename = yes fruit:veto_appledouble = no fruit:wipe_intentionally_left_blank_rfork = yes fruit:delete_empty_adfiles = yes fruit:time machine = yes # 下面这行会告知 time-machine 最大可用空间 # 在实际使用过程中,tm 并不会根据这个值动态计算出可用空间,并且永远将可用空间展示为这个最大值 # 因此最终仍有可能占满 # fruit:time machine max size = 350G # time-machine 配置结束 path = /mount/usb/time-machine/time-machine public = yes read only = no writable = yes

每一行配置具体作用进行了备注。除了 TM 特有的配置外,其他配置对于普通的文件共享是通用的。不过,这里我也不会讲如何部署 samba 服务。

配置好后,接着对 macOS 进行配置即可。

Finder

打开 Finder,command + k 链接 samba 服务器:

image.png

需要输入 samba 服务对应的 ip 地址。点击连接后,根据配置输入用户名和密码,接着就可以看到共享的服务了:

image.png 找到 TM 配置,选择刚刚出现的磁盘:

image.png 接着 TM 就会自动备份了。

TM 采用增量备份的方式,首次备份数据量很大;后续的备份是以之前的为基础,仅保存修改的内容,因此备份的数据会减少。

macOS 中无法设置 TM 能够占用的最大容量,而按照网络上的教程对 samba 进行配置也不能限制。因此在使用 TM 的时候,最终会消耗完分区的剩余容量。所以我只能给 TM 单独创建了一个分区,从根本上解决这个问题。

文件系统

主流操作系统都有自己的文件系统。例如:

macOS:APFS windows:NTFS Linux:ext4

对于每一个文件系统,都有其发展过程。例如:

APFS 的前身(2016年以前)是 HFS、HFS+; NTFS 是为了取代 FAT32 而出现的; ext4 是从 ext2、ext3 发展而来

上文提到的 FAT32 文件系统是上古时代的产物,由于是支持的32位系统,因此该文件系统不支持 4G 以上大小的单文件存储。后来有了 exFat ,这个是对 FAT32 的扩展,支持 64 位系统,但文件大小 4G 限制也没了。

文件系统类型较多,在选择的时候可以考虑兼容性以及是否支持日志。

兼容性 文件系统\操作系统macOSLinuxwindowsNTFS需要软件来支持写入、删除等操作;默认只能读取文件内容。不过,可以通过 smb 共享的方式读写 ntfs 格式的文件✅✅exFAT✅✅✅ext4✅✅需要使用三方软件(DiskGenius)读写;在资源管理器中不展示盘符APFS✅未测试未测试 是否支持日志

对于支持日志的文件格式来说,存储文件的同时也会储存文件的元信息,因此数据更安全。主流操作系统对应的文件格式都支持日志。兼容性表现最好的 exFat 反倒是不支持的~

在这次组建 RAID 的时候,我选择了 NTFS,主要是从安全性考虑,而且兼容性也较好。如果我有一块优盘,那么我会毫不犹豫的选择 exFAT。毕竟,荣耀智慧屏都是支持 exFAT 的呢:

image.png



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3